package com.example.controller;

import com.example.anno.MyLog;
import com.example.pojo.Dept;
import com.example.pojo.Result;
import com.example.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j //提供的注解，可以不用获取Logger对象即可使用其方法
//一个完整的请求路径，应该是类上的@RequestMapping的value属性＋方法上的@RequestMapping的value属性。
@RequestMapping("/depts")  //优化，将公共路径抽取出来
@RestController
public class DeptController {
    //private static Logger log = LoggerFactory.getLogger(DeptController.class);

    @Autowired
    private DeptService deptService;

    /*查询部门数据*/
    //@RequestMapping(value = "/depts",method = RequestMethod.GET)//指定请求方式为GET
    @GetMapping//简单方式指定为GET
    public Result list(){
        log.info("查询所有部门数据");//专业的日志记录,不推荐使用Sout

        List<Dept> deptList = deptService.list();

        return Result.success(deptList);
    }

    @MyLog
    /* 删除部门数据 */
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) throws Exception {
        log.info("根据路径传递的id删除对应数据");

        deptService.delete(id);

        return Result.success(null);
    }

    @MyLog
    /* 添加部门数据 */
    @PostMapping
    public Result insert(@RequestBody Dept dept){
        deptService.insert(dept);
        return Result.success();
    }

    /*根据主键Id查找部门*/
    @GetMapping("/{id}")
    public Result selectById(@PathVariable Integer id){
        Dept dept =  deptService.selectById(id);
        return Result.success(dept);
    }

    @MyLog
    /*修改部门数据*/
    @PutMapping
    public Result update(@RequestBody Dept dept){
        deptService.update(dept);
        return Result.success();
    }


}
